package utils;

import java.util.LinkedList;

public class TipoProc extends Tipo {

	private LinkedList<ParametroFormal> params;

	public TipoProc(LinkedList<ParametroFormal> params) {
		super("proc");
		setParams(params);
	}

	public LinkedList<ParametroFormal> getParams() {
		return params;
	}

	public void setParams(LinkedList<ParametroFormal> params) {
		this.params = params;
	}

	public ParametroFormal getParam(int index) {
		return params.get(index);
	}

	public int getNParams() {
		return params.size();
	}

	public Tipo getTipo(int index) {
		return getParam(index).getTipo();
	}

	public Modo getModo(int index) {
		return getParam(index).getModo();
	}

	public boolean equals(Object o) {
		if (o == null)
			return false;
		if (!(o instanceof TipoProc))
			return false;
		TipoProc e = (TipoProc) o;
		return t.equals(e.getT()) && params.equals(e.getParams());
	}

	public String toString() {
		return "<t: proc, params: " + params + ">";
	}

	@SuppressWarnings("unchecked")
	public Object clone() {
		return new TipoProc((LinkedList<ParametroFormal>) params.clone());
	}

}
